﻿using AutoWiring.Common;
namespace AutoWiring.Model
{
    /// <summary>
    /// 电缆计算数据
    /// </summary>
    public class CableContactItemExe
    {
        /// <summary>
        /// 序号
        /// </summary>
        public string Id { get; set; }
        /// <summary>
        /// 线缆名称
        /// </summary>
        public string cableName { get; set; }
        /// <summary>
        /// 电缆起点
        /// </summary>
        public string cableStart { get; set; }
        /// <summary>
        /// 设备起点中心点
        /// </summary>
        public XYZ startPointCenter  { get; set; }
        /// <summary>
        /// 电缆编号
        /// </summary>
        public string cableNumber { get; set; }
        /// <summary>
        /// 电缆终点
        /// </summary>
        public string cableEnd { get; set; }
        /// <summary>
        /// 设备终点中心点
        /// </summary>
        public XYZ endPointCenter { get; set; }  
        /// <summary>
        /// 电缆规格
        /// </summary>
        public string cableType { get; set; }
        /// <summary>
        /// 单位
        /// </summary>
        public string cableUnit { get; set; }
        /// <summary>
        /// 长度
        /// </summary>
        public string cableLength { get; set; }
        /// <summary>
        /// 线缆根数
        /// </summary>
        public int cableCount { get; set; }
        /// <summary>
        /// 是否为T线
        /// </summary>
        public bool isTLine { get; set; }
        /// <summary>
        /// 电缆起点连接件坐标字典带编码
        /// </summary>
        public Dictionary<string, XYZ> xyzStartDic { get; set; }
        /// <summary>
        /// 电缆起点连接件坐标
        /// </summary>
        public List<XYZ> xyzStartList { get; set; }
        /// <summary>
        /// 电缆终点连接件坐标
        /// </summary>
        public Dictionary<string, XYZ> xyzEndDic { get; set; }
        /// <summary>
        /// 电缆终点连接件坐标
        /// </summary>
        public List<XYZ> xyzEndList { get; set; }
        public List<XYZ> xyzEndLineList { get; set; }
        /// <summary>
        /// 该线的交点是左偏还是右偏
        /// </summary>
        public int xAxis { get; set; }
        /// <summary>
        /// 预留槽数据
        /// </summary>
        public List<XYZ> reservedSlotList { get; set; }
        /// <summary>
        /// 支架数据
        /// </summary>
        public List<XYZ> ZhiJiaList { get; set; }
        /// <summary>
        /// 机柜前的两个点是否为同一个点
        /// </summary>
        public bool isSameZhiJia { get; set; }
        //是否为进线侧
        public bool isJinXian { get; set; }
        /// <summary>
        /// 是否走1、2层
        /// </summary>
        public bool isOneTwo { get; set; }
        /// <summary>
        /// 是否走顶部
        /// </summary>
        public bool isTop { get; set; }
        /// <summary>
        /// 层高
        /// </summary>
        public double levelHeight { get; set; }
        /// <summary>
        /// 主干宽度
        /// </summary>
        public double mainWidth { get; set; }
        /// 主干宽度
        /// </summary>
        public double JXmainWidth { get; set; }
        /// 主干宽度
        /// </summary>
        public double KXmainWidth { get; set; }
        /// <summary>
        /// 第一根线方向向量
        /// </summary>
        public XYZ firstDirection { get; set; }
        /// <summary>
        /// 第二根线方向向量
        /// </summary>
        public XYZ secondDirection { get; set; }
        /// <summary>
        /// 第三根线方向向量（到支架前）
        /// </summary>
        public XYZ threeDirection { get; set; }
        /// <summary>
        ///  第一个支架坐标
        /// </summary>
        public XYZ firstSupport { get; set; }
        /// <summary>
        /// 第二个支架坐标
        /// </summary>
        public XYZ secondSupport { get; set; }
        /// <summary>
        /// 机柜前支架的单位偏移量
        /// </summary>
        public double moveValue { get; set; }
        /// <summary>
        /// 是在支架的左侧还是右侧，true为左侧，false为右侧
        /// </summary>
        public bool isLeft { get; set; }
        /// <summary>
        /// T线是否为下层线缆
        /// </summary>
        public bool isDownT { get; set; }

        /// <summary>
        /// F线是否为下层线缆
        /// </summary>
        public bool isDownF { get; set; }

        /// <summary>
        /// 线缆沟内的第一层支架高度
        /// </summary>
        public double InLevelHeight { get; set; }
        /// <summary>
        /// 线缆沟内的支架每层间隔
        /// </summary>
        public double InHeight { get; set; }
        /// <summary>
        /// 线缆沟外的第一层支架高度
        /// </summary>
        public double supportFirstLevelHeight { get; set; }
        /// <summary>
        /// 线缆沟外的支架每层间隔
        /// </summary>
        public double supportIntervalLevelHeight { get; set; }
        /// <summary>
        /// 支架宽度
        /// </summary>
        public double supportWidth { get; set; }
        /// <summary>
        /// 线缆半径
        /// </summary>
        public double cableRadius { get; set; }
        /// <summary>
        /// 主干道上的点
        /// </summary>
        public List<XYZ> mainPointList { get; set; }
        /// <summary>
        /// 是否走对侧
        /// </summary>
        public bool IsOpposite { get; set; }

        /// <summary>
        /// 线缆沟末端中心点
        /// </summary>
        public XYZ finallyPoint { get; set; }
        /// <summary>
        /// 偏移后最终的点
        /// </summary>
        public List<XYZ> resultPointList { get; set; }
        /// <summary>
        /// 支架相关信息
        /// </summary>
        public Dictionary<string ,List<XYZ>> ZJxyzDict { get; set; }
        /// <summary>
        /// 最终一个设备的各个线的点坐标
        /// </summary>
        public Dictionary<string, List<XYZ>> resultPointDic { get; set; }

        public CableContactItemExe()
        {
            reservedSlotList = new List<XYZ>();
            ZhiJiaList = new List<XYZ>();
            mainPointList = new List<XYZ>();
            resultPointList = new List<XYZ>();
            resultPointDic = new Dictionary<string, List<XYZ>>();

        }

    }
}
